//
//  FirstViewController.m
//  07-Delegate
//
//  Created by 李昊林 on 16/7/22.
//  Copyright © 2016年 李昊林. All rights reserved.
//

#import "FirstViewController.h"
#import "SecondViewController.h"

@interface FirstViewController () <SecondVCPassValue>
@property (nonatomic, strong) UILabel *titleLabel;
@end

@implementation FirstViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //关于BaseViewController
    //时基类的ViewController
    //在这个Controller中， 进行统一的修改
    //例如： 统一修改坐标系， 统一修改背景色
    //统一修改navgation barTinColor Tincolor
    
    
    
    
    
    
    // Do any additional setup after loading the view.
    //    self.navigationController.navigationBar.translucent = NO;
    //    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 50)];
    
    self.titleLabel.text = @"121212";
    [self.view addSubview:self.titleLabel];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(0, 100, 200, 60);
    [button setTitle:@"点我跳下一页" forState: UIControlStateNormal];
    [button addTarget:self action:@selector(pushToNextVC:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    //界面通信
    //1.属性传值， 一般常用于 从前往后传值
    // 将想要传递的值， 作为后一个页面的属性， 并通过该属性进行一系列的操作
    //  将FirstViewController 的titleLabel.text传递给SecondViewController 的textField
    //        ⬇️ push               ⬇️ 属性传值
    // SecondViewController －》 titleString －》 去使用titleString做任意事情
    
    
    //从后往前传值， （可以， 但是不推荐这样使用）
    //  将SecondViewController 的textField.text传递给FirstViewController 的label
    //        ⬇️ pop (获取当前First 的VC)     ⬇️ 属性传值
    // SecondViewController －》      titleTextField －》 去使用titleString做任意事情
    
    
    
    //2. 协议传值 （delegate）
    //从后往前传值
    //Second ->First
    //决定用代理的方式传值
    //1.决定要给Second去声明协议（最难确定）
    //2.声明delegrate @property id <Delegrate名>delegrate
    //3.在哪签协议？
    //只要可以拿到对象，就可以签协议
//    xxx.delegrate = self 【self汇报黄 ，没有签订协议，亲爱的那个协议】
  //5.签订完协议 汇报换个，因为又必须要实现的协议方法未实现 实现签订方法
    //6.但是协议签订方法没有执行，缺少触发时机
    //在哪里出发协议方法（加上对应的判断）
    
    
    //3.关于navigation中控制器的释放
    //navigation中viewControl数据，数组对对象有引用计数+1
    //当controller入栈时，则被假如数组中，引用计数+1
    //只要不出栈，就不会被释放
    //A ->push ->B
    //B -> pop -> A  B 出栈 对应释放
    //
    //
    //
}
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:YES];
    NSLog(@"%@", _titleTextField);
}

- (void)pushToNextVC:(UIButton *)button {
    SecondViewController *second = [[SecondViewController alloc] init];
    second.titleString = _titleLabel.text;
    
#warning 指定代理人 （这个时候SecondViewController才刚创建出来）
    //second.delegate = self;
    [self.navigationController pushViewController:second animated:YES];
}
#warning 实现协议方法
- (void)passValue:(NSString *)string {
    NSLog(@"%@", string);
    
}








- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
 #pragma mark - Navigation
 
 // In a storyboard-based application, you will often want to do a little preparation before navigation
 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
 // Get the new view controller using [segue destinationViewController].
 // Pass the selected object to the new view controller.
 }
 */

@end